#ifndef SRC_LTARENA_H_
#define SRC_LTARENA_H_

#include "src/lta.h"

typedef struct ltarena__Header_ ltarena__Header;

lta_ArrayOf(ltarena__Header*, ltarena_HeaderPtrs);

/**多次分配，一次释放的内存池。*/
typedef struct {
    ltarena_HeaderPtrs hptrs_;
} ltarena_Arena;

/**从Arena里分配内存。*/
void* ltarena_Alloc(ltarena_Arena* arena, uint32_t size);

/**类似lt_Realloc，只是改为从Arena里分配内存。*/
void* ltarena_Realloc(ltarena_Arena* arena, void* ptr, uint32_t n);

/**释放从Arena里分配的所有内存。*/
void ltarena_Free(ltarena_Arena* arena);

#endif // SRC_LTARENA_H_
